package com.example.pdfload.service;

import org.apache.commons.io.FileUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.IOException;

/**
 * PDF缓存服务
 * 使用Ehcache实现PDF文件的智能缓存管理
 */
@Service
public class PDFCacheService {
    
    /**
     * 使用Spring Cache注解实现缓存
     * 缓存名称对应ehcache.xml中配置的"pdfCache"
     * 
     * @param fileName PDF文件名
     * @return PDF文件字节数组
     * @throws IOException 文件读取异常
     */
    @Cacheable(value = "pdfCache", key = "#fileName")
    public byte[] loadPdfFile(String fileName) throws IOException {
        // 这行日志只有在真正从文件系统加载时才会输出
        // 如果从缓存获取，不会执行这个方法体
        System.out.println("从文件系统加载PDF: " + fileName);
        
        File pdf = ResourceUtils.getFile("classpath:" + fileName);
        byte[] pdfData = FileUtils.readFileToByteArray(pdf);
        
        System.out.println("PDF文件大小: " + (pdfData.length / 1024 / 1024) + " MB");
        
        return pdfData;
    }
}